A portion of the disclosure of this patent contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to the area of service tools for remote machines. More specifically, the present invention relates to communication between service application programs in computer systems, and remote devices such as remote machines and external data in files, databases, and programs.
An understanding of object oriented programming and object-oriented application frameworks will assist in full understanding of the present invention. As is understood to one skilled in the art, an xe2x80x9cobjectxe2x80x9d is an abstraction of a real world entity and is implemented as a combination of a data structure (whose fields are called xe2x80x9cattributesxe2x80x9d or xe2x80x9cdata membersxe2x80x9d) and a set of operations (xe2x80x9cmethodsxe2x80x9d or xe2x80x9cmember functionsxe2x80x9d) that can be performed on it. A xe2x80x9cclassxe2x80x9d is a data type for a set of objects that each have the same data structure and the same operations. An xe2x80x9cinstancexe2x80x9d of a class is an object, the data type of which is the class, as actually embodied in the memory of a running application program.
Classes are grouped into one or more (compile-time) hierarchies based on xe2x80x9cinheritance,xe2x80x9d which allows the interface (i.e. the names and types of the attributes and methods) of a xe2x80x9csubclassxe2x80x9d to be specified in terms of its differences from those of one or more xe2x80x9csuperclasses.xe2x80x9d Instances may be grouped in one or more (run-time) hierarchies by xe2x80x9ccontainmentxe2x80x9d; an object that contains a plurality of other objects is called a xe2x80x9ccontainerxe2x80x9d or a xe2x80x9ccollection.xe2x80x9d Further information regarding object oriented programming concepts are found in The Annotated C++ Reference Manual by Margaret A. Ellis and Bjarne Stroustrup, Addison Wesley c 1990.
An xe2x80x9cobject-oriented application frameworkxe2x80x9d consists of a library of classes that are designed to be extended and subclassed by the application programmer, packaged along with several illustrative sample applications that use those classes and which are designed to be modified by the application programmer. The sample applications generally constitute a system that is useful in its own right. In general, the basic concept of a framework is well known to one skilled in the art. Some example frameworks include X Toolkit, Motif Toolkit, Smalltalk Model-View-Controller GUI, and MacApp.
An xe2x80x9capplicationxe2x80x9d is a program or set of cooperating programs that enable a user of a computer system to accomplish some task or set of tasks.
Remote Service Applications are applications that allow a computer user to communicate with and perform services (operations) upon machines (remote machines) that are separate from the user""s computer system, possibly at a remote location, i.e. off-site. Some examples of remote machines include office machines such as copy machines, facsimile machines, and phone systems; and software entities in the memory of some remote computer system such as a file server or database server, etc. The typical actions performed with remote service applications include remotely diagnosing problems of a remote machine, monitoring the usage of the remote machine, enabling/disabling features of the remote machine, retrieving data, changing parameters, etc.
The present invention also supports applications that communicate with and perform operations upon software entities such as files and processes that are contained the same computer system as the application program; we will use the term xe2x80x9cremote machinexe2x80x9d with the understanding that it may also include processes and files in the user""s machine, but external to the memory and process controlled by the remote service application program.
To access a remote machine, the remote service application uses a xe2x80x9cdevice driverxe2x80x9d associated with some interface device such as a modem, and a xe2x80x9cprotocol driverxe2x80x9d that formats the data sent to and received from the remote machine. These drivers may be part of the operating system or may be modules within the application program.
In the past, remote service applications were individually customized for each type of remote machine. For example, a first remote service application communicated only with machines having a particular protocol, whereas a second remote service application communicated only with machines having a different protocol. An advantage of this customized approach is that the remote service applications are efficient because they are tightly coupled to the architecture and parameters of the respective remote machine.
One disadvantage to individually customized remote service applications is that each software system often includes functions and data that are commonly used and duplicated for each system, such as customer databases. Another disadvantage is that each time a new type of remote machine is manufactured, a new software system needs to be created to address the unique capabilities of the new type of remote machine. The problem with this is that the software system is often built from scratch; thus the development cycle time is high. Yet another disadvantage is that individually customized approaches are often inflexible. Typically once a software system is on-line, modifications to the software system are very difficult because of the numerous ramifications to other parts of the software system.
What is needed is a set of software mechanisms by which a remote service application can communicate with and operate on any one of a plurality of remote machines, and a method for developing these remote service applications, that avoid the disadvantages disclosed above.
The present invention relates generally to the area of service tools for remote machines. More specifically, the present invention relates to communication between service application programs in computer systems, and remote devices such as remote machines and external data in files, databases, and programs.
According to a preferred embodiment of the invention, an apparatus for communicating with a plurality of remote machines, of a plurality of machine types, includes a computer system including a processor and memory, a data communication means, coupled to the computer system and to the plurality of remote machines, for communicating with each of the plurality of remote machines, and a first plurality of software objects within the memory for describing services for the plurality of remote machines. A preferred embodiment also includes a plurality of operations within the memory associated with the first plurality of software objects, the plurality of operations for satisfying requests described by the services of the first plurality of software objects.
According to another embodiment of the invention, a system for communicating with a plurality of remote machines of a plurality of machine types includes a computer system including a memory and a mass storage device, a plurality of machine description files within the mass storage device, the plurality of machine description files for describing the plurality of remote machines, and a plurality of application programs within the memory, each of the plurality of application programs for reading representations of a plurality of software objects, and for making and satisfying requests described by services of the plurality of software objects.